using ZR.Model.Enums;

namespace ZR.Model.Dev.Dto
{
    /// <summary>
    /// 系统菜单表单对象
    /// </summary>
    public class MenuFormDtoBase
    {      
        /// <summary>
        /// 菜单ID
        /// </summary>
        [Required(ErrorMessage = "菜单ID不能为空")]
        public long MenuId { get; set; }
        
        /// <summary>
        /// 上级菜单
        /// </summary>
        [Required(ErrorMessage = "上级菜单不能为空")]
        public long ParentId { get; set; }
        
        /// <summary>
        /// 类型
        /// </summary>
        [Required(ErrorMessage = "类型不能为空")]
        public string MenuType { get; set; }
        
        /// <summary>
        /// 菜单名称
        /// </summary>
        [Required(ErrorMessage = "菜单名称不能为空")]
        public string MenuName { get; set; }
        
        /// <summary>
        /// 显示顺序
        /// </summary>
        [Required(ErrorMessage = "显示顺序不能为空")]
        public int OrderNum { get; set; }
        
        /// <summary>
        /// 图标
        /// </summary>
        [Required(ErrorMessage = "图标不能为空")]
        public string Icon { get; set; }
        
        /// <summary>
        /// 路由参数
        /// </summary>
        public string Query { get; set; }
        
        /// <summary>
        /// 显示状态（0显示 1隐藏）
        /// </summary>
        public string Visible { get; set; }
        
        /// <summary>
        /// 是否外链
        /// </summary>
        public int? IsFrame { get; set; }
        
        /// <summary>
        /// 路由地址
        /// </summary>
        public string Path { get; set; }
        
        /// <summary>
        /// 组件路径
        /// </summary>
        public string Component { get; set; }
        
        /// <summary>
        /// 菜单状态
        /// </summary>
        [Required(ErrorMessage = "菜单状态不能为空")]
        public string Status { get; set; }
        
        /// <summary>
        /// 权限字符串
        /// </summary>
        public string Perms { get; set; }
        
        /// <summary>
        /// 菜单名key
        /// </summary>
        public string MenunameKey { get; set; }
        
        /// <summary>
        /// 路由名
        /// </summary>
        public string RouteName { get; set; }
        
        /// <summary>
        /// remark
        /// </summary>
        public string Remark { get; set; }
        

    }

    /// <summary>
    /// 删除系统菜单请求对象
    /// </summary>
    public class DeleteMenuReqBase
    {
        /// <summary>
        /// 标识集合
        /// </summary>
        public string Ids { get; set; }
    }


    /// <summary>
    /// 获取系统菜单树选择列表请求对象
    /// </summary>
    public class GetMenuTreeSelectListReqBase:GetTreeSelectListReqBase
    {
    }

    /// <summary>
    /// 获取系统菜单分页列表请求对象
    /// </summary>
    public class GetMenuPageListReqBase : PagerInfo 
    {
        /// <summary>
        /// 树结点标识
        /// </summary>
        public long? TreeNodeId { get; set; }
        /// <summary>
        /// 是否是默认结点类型
        /// </summary>
        public bool IsDefaultNodeType { get; set; }=true;

        /// <summary>
        /// 关键词
        /// </summary>
        public string Keywords { get; set; }


    }

    /// <summary>
    /// 系统菜单列表项
    /// </summary>
    public class MenuListItemDtoBase
    {
        /// <summary>
        /// 菜单ID
        /// </summary>
        public long MenuId { get; set; }
        
        /// <summary>
        /// 上级菜单
        /// </summary>
        public long ParentId { get; set; }
        
        public string PaMenuName { get; set; }
        /// <summary>
        /// 类型
        /// </summary>
        public string MenuType { get; set; }
        
        /// <summary>
        /// 菜单名称
        /// </summary>
        public string MenuName { get; set; }
        
        /// <summary>
        /// 显示顺序
        /// </summary>
        public int OrderNum { get; set; }
        
        /// <summary>
        /// 路由参数
        /// </summary>
        public string Query { get; set; }
        
        /// <summary>
        /// 显示状态（0显示 1隐藏）
        /// </summary>
        public string Visible { get; set; }
        
        /// <summary>
        /// 是否外链
        /// </summary>
        public int? IsFrame { get; set; }
        
        /// <summary>
        /// 路由地址
        /// </summary>
        public string Path { get; set; }
        
        /// <summary>
        /// 组件路径
        /// </summary>
        public string Component { get; set; }
        
        /// <summary>
        /// 菜单状态
        /// </summary>
        public string Status { get; set; }
        
        /// <summary>
        /// 权限字符串
        /// </summary>
        public string Perms { get; set; }
        
        /// <summary>
        /// 菜单名key
        /// </summary>
        public string MenunameKey { get; set; }
        
        /// <summary>
        /// 路由名
        /// </summary>
        public string RouteName { get; set; }
        
    }

    /// <summary>
    /// 系统菜单详情
    /// </summary>
    public class MenuDetailDtoBase: MenuFormDto
    {

    }
}